[SWM] 14기 면접 후기
언제
- 2023년 1월 9일 ~ 3월 18일
어디서
- 온라인 (코테 2회)
- 오프라인 aT 센터
1차 코테
문제는 총 5개 였다. 알고리즘 4 SQL 1
- 1번: 그리디. 프로그래머스 LV2
- 2번: 완전 탐색. 프로그래머스 LV3
- 3번: 그리디. 프로그래머스 LV2
- 4번: 완전 탐색. 프로그래머스 LV3
- 5번: SQL. 분기처리 특수한 명령어?
나는 알고리즘 문제를 확실하게는 1번을 풀었다. 2번 3번은 테스트 케이스는 맞췄는데, 복기해보니 틀렸던 것 같다.
SQL은 잘모르겠다. 분기처리와 특수한 명령어를 써서 풀었어야 했던 것 같다.
코테를 본 후 나는 아직 코테 실력이 부족하다고 느꼈다.유사한 문제를 풀어봐서 어떻게 풀어야할지 대충 알고 있었는데, 실제 구현에서 시간이 너무 많이 걸렸다. 그래서 2번 3번 문제를 제대로 풀지 못했다.
그래서 탈락하지 않을까 생각했는데, 시험 도중 서버오류가 있어서 1차는 모두가 코테에 합격했다…!! (천운이였던듯)
2차 코테
문제는 1차 코테와 같이 총 5개 였다. 알고리즘 4 SQL 1
- 1번: 구현 (스택). 프로그래머스 ?
- 2번: 구현. 프로그래머스 ?
- 3번: 구현. 프로그래머스 ?
- 4번: 크루스칼. 프로그래머스 LV3
- 5번: SQL. JOIN
나는 1, 2, 3번을 풀었다.
난이도가 ? 로 했는데, 구현 문제라 어떤 알고리즘을 알아야 하는 것이 아니라 해당 문제를 풀 수 있는 아이디어와 프로세스가 떠올라야 했다.
SQL은 JOIN 을 사용해서 뭐 했었어야 하는 것 같은데, 잘몰라서 알고리즘 문제를 푸는것에 집중했다.
2솔이 합격컷이였던 것 같다! (SQL, 구현 상관없이)
심층 면접
면접장에서 발표할 포트폴리오를 미리 만들어서 제출하고, 해당 포트폴리오로 3분 발표를 해야했다. 그 다음 질의응답 9분씩 인데 개별로 주어지지 않고, 모두에게 질문이 순서대로 하나씩 주어졌다.
내가 받은 질문은 다음과 같다.
1.코드의 퀄리티를 높이기 위해 했던 노력이 있는지?
- MVVM + Clean architecture 를 프로젝트 팀원들과 토론하여 적용을 결정했고, Github에 Best Practice를 참고하여 프로젝트에 적용하였다.
2.React에 관한 질문 (들어본적 없는 좀 생소한 질문이였다.)
- React는 CRUD 정도만 할줄 알아서 잘모르겠다. (지원서에 기술 스택에 React를 적어놔서 물어보신 것 같다. 그냥 해봤다 정도로 적었는데, 잘 모르는 기술 스택이라면 아예 안적는게 낫겠다고 느꼈다.)
3. Paramater와 Argument의 차이에 대해서 알고있는지?
- 모르겠다.
찾아보니까 Parameter는 함수를 정의할 때 사용되는 변수이고, Argument는 실제로 함수가 호출될 떄, 넘기는 변수값 이라고 한다. 좋은 지식을 배웠다.
4. 인원이 많았던 프로젝트를 경험하면서 겪었던 어려운 부분?
- 팀원이 일이 있거나 아프거나 해서 결손이 발생했을때, 업무의 재분배가 제대로 이루어지지 않아 어려움을 겪었다. 그 후 이러한 상황을 대처하기 위해 각자 맡은 업무를 상세하게 문서로 작성해서, 다른 사람들이 쉽게 업무 인수인계를 받을 수 있도록 하는 프로세스를 구축했다.
5. 코드를 작성하는 능력뿐만 아니라 읽는 능력 또한 중요하다. 이러한 역량을 키웠던 경험이 있는지?
- 팀 프로젝트에서 코드 리뷰를 적극적으로 했다. 실제로 동료의 코드를 테스트 해보고 개선점을 위주로 리뷰했다.
5-1. 코드리뷰를 하면서 어떠한 룰이 있었는지?
- Priority rule을 사용했다. 해당 룰은 P1-P5 까지 리뷰의 중요도를 나누어 소통하는 방법이다.
6. Levenshitein Distance(편집거리 알고리즘)를 사용하셨는데, 어떤 알고리즘인지 설명해주세요.
- 해당 알고리즘은 두개의 문자열을 2차원 배열을 이용하여 유사도를 측정하는 알고리즘이다. 프로젝트에서는 한글을 대상으로 적용했기 때문에 자음 모음을 우선 나눴고, 문자열을 추가, 삭제, 변경 했을 때 각각 가중치를 다르게 줘서 판단하고자 하는 형태의 유사도를 측정할 수 있게끔 구현했다.
7. MVC말고 MVVM을 적용했을 때의 장점은?
- MVC와 비교했을 때, MVVM은 View와 View의 로직이 나눠져있기 때문에 코드의 역할이 분명해지고, 응집도가 높아지는 장점이 있다.
7-1 MVC도 View랑 Controller가 나눠져있을텐데?
- (조금 당황함) 음.. 앱에서 MVC 패턴은 View와 ViewController가 함께 결합되어있다.
앱은 다르구나 하면서 면접관님이 넘어가셨다.
8. Networking을 기술스택에 적었는데, 모바일 디바이스로 어떻게 P2P 연결을 하는가?
- 모르겠다.
찾아보니 Bluetooth, WiFi, Framework를 사용해서 구현하는 방법이 있는 것 같은데, 구현해본 경험도 없고 지식도 없었다..
9. 마지막으로 코드의 퀄리티를 높이기 위해 공부와 노력하고 있는 것들을 알려주세요
- Swift 언어를 컴파일 해서 뜯어보며 언어의 효율적인 사용에 대해 공부하고 있고, 프로토콜 지향 언어의 장점을 살려서 확장성 있게 코드를 작성하기 위해 노력하고 있다.
면접을 끝내고난 뒤.. 포폴 작성 전략이 들어맞지않았다 라는 생각이 들었다. 면접관님이 들어오자마자 개발 역량을 강조하셨는데, 나는 기획적인 부분을 더 강조하는 포폴을 작성했었다ㅜ
그리고 질문들도 다 기술관련이였다. 오직 질문 2개 (4번 5번)만 기술 질문이 아니였다. 특히 나 말고 백엔드, 프론트는 면접관분들의 전문 분야인지 엄청 상세하게 질문하였고, 대답을 잘못하셨던 질문들이 많았다.
몇개 답변을 못했지만 전반적으로 포폴을 잘 발표하고 답변 할 수 있는 질문에 대해서는 잘 대답했다고 생각하지만…
결론은 역시나 또 면까몰 저번 mash-up 때 처럼 잘모르겠다~
23일에 발표니 소마는 이제 잠시 잊고 다른 일들에 집중하자.